#pragma once

#include "IXSkinCore.h"
#include "XBaseObjImpl.h"


class CXSkinCoreImpl : public CXBaseObjImpl<IXSkinCore>
{
    typedef CXBaseObjImpl<IXSkinCore> superclass;
    DEF_SKIN_CLASS_SINGLE_INTF(CXSkinCoreImpl,
        superclass,
        gs_strGuidXSkin,
        IXSkinCore,
        eIntf_Singleton);

public:
    CXSkinCoreImpl();
    virtual ~CXSkinCoreImpl();

public:
    // IXSkinCore
    virtual HRESULT STDMETHODCALLTYPE   InitCore(IN LPCTSTR szSkinRootPath, IN LPCTSTR szLanguage);
    virtual HRESULT STDMETHODCALLTYPE   DestroyCore();

protected:
    HRESULT InitStringBundle(IN LPCTSTR szSkinRootPath, IN LPCTSTR szLanguage);

protected:
    ULONG_PTR   m_uGdiplusToken;
    HRESULT     m_hOleInitResult;
};


